package com.hyt.it.ogt.pj.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.pj.model.entity.Task;
import com.hyt.it.ogt.pj.model.vo.CandidateSubjectiveScoreVO;
import com.hyt.it.ogt.pj.model.vo.MarkBatchVo;
import com.hyt.it.ogt.pj.model.vo.MarkData;
import com.hyt.it.ogt.pj.model.vo.MarkDataVo;
import com.hyt.it.ogt.pj.model.vo.MarkStatusVo;
import com.hyt.it.ogt.pj.model.vo.MarkSubjectVo;
import com.hyt.it.ogt.pj.model.vo.OptionItemVo;

/**
 * <p>
 * 评卷任务表 服务类
 * </p>
 *
 * @author qiaozj
 * @since 2020-07-09
 */
public interface ITaskService extends IService<Task> {

    List<MarkData> findTaskByPiece(String projectId, String subjectId, String pieceCode, String userId);

    List<MarkData> findTaskBySubject(String projectId, String subjectId, String pieceCode, String userId);

    List<MarkData> findTask(String projectId, String subjectId, String pieceCode, String userId);

    List<MarkData> findStudentTask(String projectId, String subjectId, String admissionNum, String userId);

    Integer submitTask(MarkData markData, String userId);

    List<Task> getStudentSubjectTask(String projectId, String subjectId, String admissionNum);

    /**
     * 获取考生试卷内容
     *
     * @param pieceScoreId
     * @param admissionNo 准考证号
     * @param userId 评卷专家id
     * @param finish 完成状态 0：未开始 1：已完成，2：评卷中
     * @return
     */
    MarkDataVo getStudentPaper(String pieceScoreId, String admissionNo,String userId, Integer finish ,Integer mobileMark);
    
    /**
     * 获取老师下的考生试卷
     *
     * @param projectId
     * @param currUserId
     * @return
     */
    MarkDataVo findTeacherTask(String projectId,String subjectId, String currUserId);

    /**
     * 获取下一份评卷
     * @param currUserId
     * @param projectId
     * @param subjectId
     * @param batchId
     * @param placeId
     * @param roomId
     * @return
     */
    MarkDataVo findTeacherTask(String currUserId, String projectId, String subjectId, String batchId, String placeId, String roomId);

    /**
     * 提交老师的评卷数据
     *
     * @param markDataVo
     * @param userId
     * @return
     */
    Integer submitTeacherTask(MarkDataVo markDataVo, String userId) throws Exception;

    /**
     * 查看评卷内容
     * @param projectId
     * @param subjectId
     * @param pieceCode
     * @param currUserId
     * @return
     */
    List<MarkData> getSudentAnswer(String projectId, String subjectId, String pieceCode, String currUserId);


    /**
     * 获取任务的考生信息
     * @param projectId
     * @return
     */
    List<Task> queryTaskList(String projectId);


    /**
     * 根据评卷规则分组任务
     * @param projectId
     * @return
     */
    List<Task> queryTaskGroupByMarkModel(String projectId);


    /**
     * 提交老师考试下的学生成绩
     * @param projectId
     * @param subjectId
     * @param currUserId
     * @return
     */
    boolean saveTaskByUser(String projectId, String subjectId, String currUserId, String batchId, String placeId, String roomId);

    /**
     * 保存评卷信息
     * @param markDataVo
     * @param userId
     * @return
     */
    Integer saveTask(MarkDataVo markDataVo, String userId);

    /**
     * 获取评卷科目数据
     * @param currUserId
     * @param projectId
     * @param batchId
     * @param placeId
     * @param roomId
     * @return
     */
    List<MarkSubjectVo> getTaskSubject(String currUserId, String projectId,  String batchId, String placeId, String roomId);

    /**
     * 获取评卷批次数据
     * @param currUserId
     * @param projectId
     * @param subjectId
     * @param batchId
     * @param placeId
     * @param roomId
     * @return
     */
    List<MarkBatchVo> getTaskBatch(String currUserId, String projectId, String subjectId, String batchId, String placeId, String roomId);

    /**
     * 获取评卷状态信息
     * @param currUserId
     * @param projectId
     * @param subjectId
     * @param batchId
     * @param placeId
     * @param roomId
     * @return
     */
    List<MarkStatusVo> getTaskStatus(String currUserId, String projectId, String subjectId, String batchId, String placeId, String roomId);

    /**
     * 获取考点下的考场
     * @param projectId
     * @param palceId
     */
    List<OptionItemVo>  getExpertRoom(String projectId, String palceId);

    /***
     * 获取小题的分数列表
     * @param projectId
     * @param encodeId
     * @return
     */
    List<CandidateSubjectiveScoreVO> getCandidateSubjectiveScoreVOs(String projectId, String encodeId);


    /**
     * 查询所以的科目id
     * @param projectId
     * @param batchId
     * @param roomId
     * @return
     */
    List<Task> getTaskSubjects(String projectId, String batchId, String roomId);
}
